<?php
//antic
class antic extends Controller {

	function antic(){
		parent::Controller();
		$this->load->library('rapyd');
	}
    function index() {
        
		redirect('ventas/antic/filteredgrid');
	}
	function filteredgrid() {
		
         $this->rapyd->load('datagrid2','datafilter');

		$atts = array(
			'width'      => '800',
			'height'     => '600',
			'scrollbars' => 'yes',
			'status'     => 'yes',
			'resizable'  => 'yes',
			'screenx'    => '0',
			'screeny'    => '0'
		);

		$modbus=array(
			'tabla'   =>'scli',
			'columnas'=>array(
			'cliente' =>'C&oacute;digo cod_cli',
			'nombre'=>'Nombre',
			'rifci'=>'RIF'),
			'filtro'  =>array('cod_cli'=>'C&oacute;digo Cliente','nombre'=>'Nombre'),
			'retornar'=>array('cliente'=>'cod_cli'),
			'titulo'  =>'Buscar cod_cli');

		$boton=$this->datasis->modbus($modbus);
        
        $this->rapyd->uri->keep_persistence();
        
		$filter = new DataFilter('B&uacute;squeda de Anticipos a Clientes');
		$select=array('b.descrip as banco','cuenta_ori','rein','(monto-aplica) resta','a.tipo',  'serie',  'numero', 'cod_cli',  'nombre',  'rif',  'fecha',  'monto',  'aplica',  'formap',  'referen', 'a.moneda', 'id'); 
		$filter->db->select($select);
		$filter->db->from("itabonos AS a");
		$filter->db->join("bancos AS b",'a.serie=b.codigo');
		$filter->db->where('a.tipo','AN');
	
		
		$filter->fechad = new dateonlyField('Desde', 'fechad','d/m/Y');
		$filter->fechah = new dateonlyField('Hasta', 'fechah','d/m/Y');
		$filter->fechad->clause  =$filter->fechah->clause ='where';
		$filter->fechad->db_name =$filter->fechah->db_name='fecha';
		$filter->fechah->size=$filter->fechad->size=10;
		$filter->fechad->operator='>=';
		$filter->fechah->operator='<=';

		$filter->numero = new inputField('N&uacute;mero', 'a.numero');
		$filter->numero->size=20;

		$filter->cod_cli = new inputField('Cliente','cod_cli');
		$filter->cod_cli->append($boton);
		$filter->cod_cli->size=20;
				        
        $filter->banco = new dropdownField("Banco", "serie");
		$filter->banco->style='width:200px;';
        $filter->banco->option("","Todos");
		$filter->banco->options("SELECT codigo, descrip FROM bancos ORDER BY codigo" );
		
		$filter->moneda = new dropdownField("Moneda", "a.moneda");
		$filter->moneda->style='width:200px;';
		$filter->moneda->option("","Todas las monedas" );
		$filter->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");

		$filter->buttons('reset','search');
		$filter->build();
		
		$grid = new DataGrid2();
		$grid->order_by('id','desc');
		$grid->use_function('accion');
		$grid->per_page = 10;
          
        //$uri3 = anchor("ventas/antic/dataedit/show/<#id#>","Eliminar Aplicados");
        //$uri4 = anchor("ventas/antic/reintegro/modify/<#id#>","Reintegro");
        $uri = anchor("ventas/antic/dataedit/show/<#id#>","R<#serie#>-<#numero#>");
        
        $uri_2  = anchor_popup('formatos/ver/ABONO/AN/<#serie#>/<#numero#>',img(array('src'=>'images/pdf_logo.gif','border'=>'0','alt'=>'Ver Html','height'=>'15','title'=>'Ver Html')),$atts);
		$uri_2 .= anchor_popup("formatos/verhtml/ABONO/AN/<#serie#>/<#numero#>",img(array('src'=>'images/html_icon.gif','border'=>'0','alt'=>'Ver Pdf','height'=>'15','title'=>'Ver Pdf')),$atts);
					        
        $grid->column('Acci&oacute;n',$uri_2,"align='center'");
        
        $grid->column('N&uacute;mero'       ,$uri);
        $grid->column("Origen"               ,"cuenta_ori","cuenta_ori"  ,"align='left'");
        $grid->column("Banco"               ,"banco","banco"  ,"align='left'");
        $grid->column("Moneda"              ,"moneda","moneda"  ,"align='center'");
        $grid->column_orderby('Fecha'         ,'<dbdate_to_human><#fecha#></dbdate_to_human>'  ,'fecha'  );
        $grid->column('cod_cli','cod_cli');
		$grid->column('Nombre'  ,'nombre');
		$grid->column('Monto'   ,'<nformat><#monto#></nformat>','align=\'right\'');
		$grid->column('Monto Aplicado'      ,'<nformat><#aplica#></nformat>','align=\'right\'');
		$grid->column('Monto sin Aplicar'   ,'<nformat><#resta#></nformat>','align=\'right\'');
        $grid->column('Reintegros'          ,'<nformat><#rein#></nformat>','align=\'right\'');
		//$grid->column('Monto Reintegrado'   ,'<nformat><#rein#></nformat>','align=\'right\'');
        //$grid->column('Anticipos Aplicados' ,$uri3,'align=\'left\'');
        //$grid->column('Reintegro' ,$uri4,'align=\'left\'');


		$grid->totalizar('monto','aplica','resta');
		$grid->add('ventas/antic/dataedit/create/','Nuevo Anticipo');
		
		$grid->build('datagridST');
		//echo $grid->db->last_query();
		
		$style ='
		<style type="text/css">
		.fakeContainer { /* The parent container */
		    margin: 5px;
		    padding: 0px;
		    border: none;
		    width: 1200px; /* Required to set */
		    height: 300px; /* Required to set */
		    overflow: hidden; /* Required to set */
		}
		</style>	
		';

		$data['style']   = $style;
		$data['style']  .= style('superTables.css');
        
		$data['content'] = $grid->output;
		$data['filtro']  = $filter->output;
		$data['tabla']  = "";
		
		$data['head']    = $this->rapyd->get_head();
		$data['title'] = heading('Anticipos a Clientes');
		$this->load->view('view_ventanas', $data);
	}
	function reintegro($estado,$id){
        
		$this->rapyd->load('dataedit');
		        
		$script='
		<script type="text/javascript" >
			$(function(){
				$(".inputnum").numeric(".");
			});	
			
			
		</script>';
		
		
		$modbus_sprv=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
                'proveed'=>'cod_clip'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->p_modbus($modbus_sprv);
        
        $modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_rein'),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		$btn=$this->datasis->p_modbus($modbus);
        
		$edit = new DataEdit(" ", "itabonos");
        $edit->back_url = site_url("ventas/antic/dataedit/show/$id");
                        
        $edit->post_process('update','_post_update2');		
		$edit->id = new hiddenField(" ", 'id');
		
		$edit->tipoe = new hiddenField(" ", 'tipoe');
		$edit->tipoe->db_name  = 'tipo';
		
		$edit->serie = new dropdownField("Comprobante", "serie");
		$edit->serie->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM serieg ORDER BY codigo");
		$edit->serie->rule= "required";
        $edit->serie->style='width:200px;';
        $edit->serie->onchange = "numrecibo();";
        $edit->serie->mode="autohide";

		$edit->numero = new inputField("N&uacute;mero", "numero");
		$edit->numero->size = 12;
		//$edit->numero->rule= "required";
        $edit->numero->css_class ='inputnum';
		$edit->numero->maxlength=11;
		$edit->numero->mode="autohide";
		$edit->numero->in="serie";
		$edit->numero->rule= "callback_chexiste";
		//$edit->numero->when=array('show','modify');
		
		$edit->cod_cli = new inputField("C&oacute;digo", "cod_cli");
		$edit->cod_cli->size = 7;
		$edit->cod_cli->maxlength=5;
        $edit->cod_cli->rule= "required";
        $edit->cod_cli->readonly  = true;
        $edit->cod_cli->mode="autohide";
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->readonly  = true;
        $edit->nombre->mode="autohide";
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->readonly  = true;
        $edit->rif->mode="autohide";
        
        $edit->fecha = new DateonlyField("Fecha", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
		$edit->fecha->mode="autohide";
        $edit->fecha->rule= "required";
		$edit->fecha->size = 10;
		$edit->fecha->rule= "callback_cambio";
		
        $edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:230px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");
		$edit->moneda->rule = 'required';
		$edit->moneda->when=array('show','modify');
		$edit->moneda->mode="autohide";
      
		$edit->cambio = new inputField('Cambio', 'cambio');
		$edit->cambio->when=array('show','modify');
		$edit->cambio->mode="autohide";

		$edit->referen = new inputField('N&uacute;mero de Operaci&oacute;n', 'referen');
		$edit->referen->css_class ='inputnum';
		$edit->referen->size      = 20; 
		$edit->referen->rule = 'required';
		$edit->referen->mode="autohide";
        				
		$edit->monto = new inputField('Monto de Anticipo', 'monto');
		$edit->monto->size = 10;
		$edit->monto->maxlength=15;
		$edit->monto->readonly  = true;
		$edit->monto->css_class ='inputnum';
		
		$edit->aplica = new inputField('Monto Aplicado', 'aplica');
		$edit->aplica->size = 10;
		$edit->aplica->maxlength=15;
		$edit->aplica->readonly  = true;
		$edit->aplica->css_class ='inputnum';
        
        $monto=$edit->_dataobject->get("monto");
        $aplica=$edit->_dataobject->get("aplica");
        $rein=$monto-$aplica;
		
		$edit->rein = new inputField('Monto a Reintegrar', 'rein');
		$edit->rein->size = 10;
		$edit->rein->maxlength=15;
		$edit->rein->css_class ='inputnum';
        $edit->rein->append(' Monto Disponible '.$rein);
		$edit->rein->rule= "callback_rein";
        
        $edit->cuenta_rein = new inputField('Cuenta a Reintegrar', 'cuenta_rein');
		$edit->cuenta_rein->size     = 12;
		$edit->cuenta_rein->append($btn);
		$edit->cuenta_rein->rule = "required";
		
		$edit->cod_clip = new inputField("Cliente a Reintegrar", "cod_clip");
		$edit->cod_clip->size = 7;
		$edit->cod_clip->maxlength=5;
        $edit->cod_clip->append($boton.' Se debe crear como PROVEEDOR');
        $edit->cod_clip->rule= "required";
		
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));

        $edit->buttons('save','undo','back');	
        $edit->build();
        
        $data['content'] = $edit->output;
		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('plugins/jquery.autocomplete.js');
		$data['script'] .= script('nformat.js');
		$data["script"] .= $script;
		$data['head']    = $this->rapyd->get_head();
			
		$data['title']   = heading("Reintegro a Cliente");
		$data['content'] = $edit->output;
		$this->load->view('view_ventanas', $data);
		
	}
	function rein(){
		
		$monto=$this->input->post('monto');
		$aplica =$this->input->post('aplica');
		$rein =$this->input->post('rein');			
		
		$tot=$aplica+$rein;
		$dis=$monto-$aplica;
		
		if ($tot>$monto){
			$this->validation->set_message('rein',"El monto reintegrado $rein  es mayor al monto disponible $dis");
			return FALSE;
		}else {
		 return TRUE;
		}
	
	}
	function dataedit(){
        
		$this->rapyd->load('dataedit');
		        
		$modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_ori',
				'descrip' =>'condi1'
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		$btn=$this->datasis->p_modbus($modbus);

		
		$modbus_sprv=array(
			'tabla'   =>'scli',
			'columnas'=>array(
                'cliente' =>'C&oacute;digo cod_cli',
                'nombre'=>'Nombre',
                'rifci'=>'RIF'),
			'filtro'  =>array('cod_cli'=>'C&oacute;digo cod_cli','nombre'=>'Nombre'),
			'retornar'=>array(
                'cliente'=>'cod_cli',
                'rifci'=>'rif',
                'nombre'=>'nombre'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar cod_cli');

		$boton=$this->datasis->p_modbus($modbus_sprv);
		
		$link=site_url('common/numrecibo/');
		
		$script ='
		$(function() {
			$(".inputnum").numeric(".");
		});
		
		function numrecibo(){
	
	seriei    = $("#serie").val();
	$.ajax({
		url: "'.$link.'"+"/"+seriei,
		success: function(msg){
			if(msg){
				$("#numero").val(msg);
			} else {
				alert("No es posible generar un numero");
			}
		}
	});
}
		';


		$edit = new DataEdit(" ", "itabonos");
        $edit->back_url = site_url('ventas/antic/filteredgrid');
        
        $edit->script($script, "create");
		$edit->script($script, "modify");
                
		$edit->pre_process('insert' ,'_pre_insert');
		$edit->post_process('insert','_post_insert');
		$edit->post_process('update','_post_update');
		$edit->pre_process('update','_pre_update');
		
		$edit->id = new hiddenField(" ", 'id');
		$edit->tipoe = new hiddenField(" ", 'tipoe');
		$edit->tipoe->db_name  = 'tipo';
		
		$edit->serie = new dropdownField("Comprobante", "serie");
		$edit->serie->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM serieg ORDER BY codigo");
		$edit->serie->rule= "required";
        $edit->serie->style='width:200px;';
        $edit->serie->onchange = "numrecibo();";
        $edit->serie->mode="autohide";

		$edit->numero = new inputField("N&uacute;mero", "numero");
		$edit->numero->size = 12;
		//$edit->numero->rule= "required";
        $edit->numero->css_class ='inputnum';
		$edit->numero->maxlength=11;
		$edit->numero->mode="autohide";
		$edit->numero->in="serie";
		$edit->numero->rule= "callback_chexiste";
		//$edit->numero->when=array('show','modify');
		
		$edit->cod_cli = new inputField("C&oacute;digo", "cod_cli");
		$edit->cod_cli->size = 7;
		$edit->cod_cli->maxlength=5;
        $edit->cod_cli->append($boton);
        $edit->cod_cli->rule= "required";
        $edit->cod_cli->readonly  = true;
        $edit->cod_cli->mode="autohide";
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->readonly  = true;
        $edit->nombre->mode="autohide";
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->readonly  = true;
        $edit->rif->mode="autohide";
        
        $edit->fecha = new DateonlyField("Fecha", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
		$edit->fecha->mode="autohide";
        $edit->fecha->rule= "required";
		$edit->fecha->size = 10;
		$edit->fecha->rule= "callback_cambio";
		
		$edit->fechac = new DateonlyField("Fecha de Comprobante", "fechac","Y-m-d");
		$edit->fechac->insertValue = date("Y-m-d");
		//$edit->fechac->mode="autohide";
        $edit->fechac->rule= "required";
		$edit->fechac->size = 9;
		$edit->fechac->when=array('modify');
		$edit->fechac->rule= "callback_cambio";
		
		$edit->numeroc = new inputField("Comprobante L010-DIARIOS", "numeroc");
		$edit->numeroc->size = 12;
        $edit->numeroc->css_class ='inputnum';
		$edit->numeroc->maxlength=11;
		$edit->numeroc->rule= "callback_chexiste2";
		$edit->numeroc->when=array('modify');
		
		$edit->recepcion = new DateonlyField("Recepci&oacute;n", "recepcion","Y-m-d");
		$edit->recepcion->insertValue = date("Y-m-d");
        $edit->recepcion->rule= "required";
		$edit->recepcion->size = 10;
		$edit->recepcion->mode="autohide";
        		
		$edit->cuenta = new inputField('Cuenta', 'cuenta');
		$edit->cuenta->size     = 12;
		$edit->cuenta->when=array('show');
                
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","ADMINISTRACI&Oacute;N");
		$edit->ccosto->option('0002',"OPERACI&Oacute;N");
		$edit->ccosto->option('0003','IMPORTACI&Oacute;N'); 
		$edit->ccosto->mode="autohide";
		$edit->ccosto->style='width:200px;';  
		
		$edit->formap = new dropdownField("Medio de Pago", "formap");
		$edit->formap->style='width:200px;';
		$edit->formap->options("SELECT formap,nombre FROM formap ORDER BY formap");
		$edit->formap->mode="autohide";
		
		$edit->vd = new  dropdownField ('Cobrador', 'vd');
		$edit->vd->options('SELECT vendedor, CONCAT(vendedor,\' \',nombre) nombre FROM vend ORDER BY vendedor');
		$edit->vd->style='width:200px;';
		$edit->vd->mode="autohide";
		
        $edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:230px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");
		$edit->moneda->rule = 'required';
		$edit->moneda->when=array('show','modify');
		$edit->moneda->mode="autohide";
      
		$edit->cambio = new inputField('Cambio', 'cambio');
		$edit->cambio->when=array('show','modify');
		$edit->cambio->mode="autohide";

		$edit->referen = new inputField('N&uacute;mero de Operaci&oacute;n', 'referen');
		$edit->referen->css_class ='inputnum';
		$edit->referen->size      = 20; 
		$edit->referen->rule = 'required';
		$edit->referen->mode="autohide";
        		
		$edit->aplica = new inputField('Monto Aplicado', 'aplica');
		$edit->aplica->size = 10;
		$edit->aplica->maxlength=15;
		$edit->aplica->mode="autohide";
		$edit->aplica->css_class ='inputnum';
		$edit->aplica->when=array('show','modify');
		
		$edit->monto = new inputField('Monto de Anticipo', 'monto');
		$edit->monto->size = 10;
		$edit->monto->maxlength=15;
		$edit->monto->css_class ='inputnum';
		
		$edit->montob = new inputField('Ingreso al Banco', 'montob');
		$edit->montob->css_class ='inputnum';
		$edit->montob->readonly  =true;
		$edit->montob->size      = 10;
		$edit->montob->when=array('modify','show');
		
		$edit->cuenta_ori = new inputField('Origen del fondo', 'cuenta_ori');
		$edit->cuenta_ori->size     = 12;
		$edit->cuenta_ori->mode="autohide";
		$edit->cuenta_ori->rule = "required";
		$edit->cuenta_ori->append($btn);
			        				    
        $edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =60;
		$edit->condi1->maxlength=50;
		$edit->condi1->mode="autohide";
		$edit->condi1->rule = "required|strtoupper";
		
		$edit->comibanco = new inputField('- Comisi&oacute;n de Banco', 'comibanco');
		$edit->comibanco->css_class ='inputnum';
		$edit->comibanco->size      = 10;
		$edit->comibanco->insertValue = '0';
		
		$edit->intbanco = new inputField('+ Intereses de Banco', 'intbanco');
		$edit->intbanco->css_class ='inputnum';
		$edit->intbanco->size      = 10;
		$edit->intbanco->insertValue = '0';
	  
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));

        $moneda=$edit->_dataobject->get("moneda");
		$cod_cli=$edit->_dataobject->get("cod_cli");
		$monto=$edit->_dataobject->get("monto");
		$id=$edit->_dataobject->get("id");
        
        IF($edit->_status=='show'){
                 
            $accion="javascript:window.location='".site_url("ventas/antic/dataedit/modify/$id")."'";  
            $edit->button_status('btn_cargar','Aplicar a Cliente',$accion,'BR','show');
            
            //$accion="javascript:window.location='".site_url("finanzas/antip/aplicat/create/$id")."'";  
            //$edit->button_status('btn_cargar','Aplicar a Varios',$accion,'BR','show');
                        
            $accion="javascript:window.location='".site_url("ventas/antic/reintegro/modify/$id")."'";  
            $edit->button_status('btn_cargar','Reintegro',$accion,'BR','show');
    
        }
        
        
        
        $edit->buttons('save','undo','back');	
        $edit->build();
        		
		$data['content'] = $edit->output;
		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('plugins/jquery.autocomplete.js');
		$data['script'] .= script('nformat.js');
		$data['head']    = $this->rapyd->get_head();
		

		IF($edit->_status=='create'){
			
			$data['title']   = heading("Crear anticipo a Cliente");
			$data['content'] = $edit->output;
			$this->load->view('view_ventanas', $data);
		}else{
			
			IF($edit->_status=='show'){
				
				$data['title']   = heading("Anticipo por $monto aplicado a las siguientes facturas");
				$mSQL="SELECT a.*,b.moneda as nmoneda,IF(compro='L',b.control,b.numero) as letra,IF(compro='O','F',b.compro) as compro 
                FROM cobros as a 
				JOIN itpagos as b on a.idpago=b.id  
				WHERE  itabono='$id' and a.tipo='AN'";
				$mSQL_1=$this->db->query($mSQL);
				$conten['result']=$mSQL_1->result();	
				$conten["form"]  =&  $edit;
				$data['content'] = $this->load->view('view_antic', $conten,true);
				$this->load->view('view_ventanas', $data);
			
			
			}else{	
				$cod_cli=$edit->_dataobject->get("cod_cli");
				$data['title']   = heading('Anticipo a Cliente '.$edit->serie->value.'-'.$edit->numero->value.' por '.nformat($monto));
				$mSQL="SELECT a.banco, IF(compro='L',a.control,a.numero) as letra, a.id,a.serie serief,a.numero factura,IF(compro='O','F',a.compro) as compro,
				a.moneda,cod_cli,a.tipo,dias,fecha,vence,
				observa,a.monto, a.abono, a.monto-a.abono as resta, ultiabonado 
				FROM itpagos as a 
				WHERE a.abono < a.monto AND cod_cli='$cod_cli'
				ORDER BY vence";
				//echo $mSQL; 
				$mSQL_1=$this->db->query($mSQL);
				$conten['result']=$mSQL_1->result();	
				$conten['cantmd']=$mSQL_1->num_rows();
				$conten['msj']   =$msj='';
				$conten["form"]  =&  $edit;
				$data['content'] = $this->load->view('view_aplicac', $conten,true);
				$this->load->view('view_ventanas', $data);
			}
		}	
		
	}
	function _post_update2($do){
		
		$monto  =$do->get('monto');
		$aplica =$do->get('aplica');
		$rein   =$do->get('rein');
		$id     =$do->get('id');
		$rif    =$do->get('rif');
		$moneda =$do->get('moneda');
		$cambio =$do->get('cambio');
		$cod_clip =$do->get('cod_clip');
		$seriei =$do->get('serie');
		$numeroi =$do->get('numero');
		//$cuenta_rein =$do->get('cuenta_rein');
		
		$ntransa =$this->datasis->fprox_numero('ntransa');
		$num     =$this->datasis->fprox_numero('nrein');
		$nrein   = substr($num,1,10);
		$usuario=$this->session->userdata['usuario'];
		$nombre=$this->datasis->dameval("SELECT nombre FROM sprv WHERE proveed='$cod_clip'");
		
		$this->db->query("UPDATE itabonos SET aplica=$aplica+$rein WHERE id='$id'");
		
		$this->db->query("INSERT INTO sprm (cod_prv,  nombre,  tipo_doc,  numero,  factura,  seriep,  seriei,  numeroi,  proveed,  transac,  fecha,  subtotal,   monto,   totalg,  vence, usuario,  cajachica, moneda,  cambio,observa1,estampa,hora,id_rein) values
		('$cod_clip','$nombre', 'RI',  'R$nrein',  'R$nrein',  '001',  '001',  'R$nrein',  '$cod_clip',  '$ntransa',  CURDATE(),  '$rein', '$rein', '$rein', CURDATE(),'$usuario', 'N', '$moneda', '$cambio','REINTEGRO A CLIENTE R$seriei-$numeroi',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$id')");
		
		return true;
	
	}
	function chexiste($codigo){
		
		$numero=$this->input->post('numero');
		$serie =$this->input->post('serie');
		
		$numero =str_pad($numero, 11, "0", STR_PAD_LEFT);
		$serie  =str_pad($serie, 3, "0", STR_PAD_LEFT);
		
		$chek=$this->datasis->dameval("SELECT COUNT(*) FROM itabonos WHERE serie='$serie' AND numero='$numero'");
		if ($chek > 0){
			$this->validation->set_message('chexiste',"El numero de comprobante $numero ya se encuetra registrado");
			return FALSE;
		}else {
		 return TRUE;
		}
	}
	function delete($anticipo,$ntransac){
						
	    $moneda=$this->datasis->dameval("SELECT moneda FROM itabonos WHERE id='$anticipo'");
        $cambio=$this->datasis->dameval("SELECT cambio FROM gser WHERE transac='$ntransac'");
         
        $query=$this->db->query("SELECT a.id,a.idpago,b.moneda,a.monto 
        FROM cobros as a
        JOIN itpagos as b on a.idpago=b.id 
        WHERE a.transac='$ntransac'");
        
        foreach($query->result() as $items ){
            
            //elimina la aplicacion
            
            IF($items->moneda==$moneda){
                 
                $this->db->query("UPDATE itabonos SET aplica=aplica-$items->monto WHERE id='$anticipo'");
                
            }else{
            
                IF($moneda=='02'){
                    $monto=$items->monto/$cambio;
                }else{
                    $monto=$items->monto*$cambio;
                }
                  
                $this->db->query("UPDATE itabonos SET aplica=aplica-$monto WHERE id='$anticipo'");
                
            }
		    
            $this->db->query("UPDATE smov SET abonos=abonos-$items->monto WHERE transac='$anticipo' and tipo_doc='AN'");
			$this->db->query("UPDATE itpagos SET abono=abono-$items->monto WHERE id='$items->idpago'");
            
			//2. suma itpagos en smov si no son letras
		
			$tipo=$this->datasis->dameval("SELECT COUNT(*) FROM itpagos WHERE id='$items->idpago'AND compro='O'");
			
			IF($tipo>0){
				
				$t2transac=$this->datasis->dameval("SELECT transac FROM itpagos WHERE id='$items->idpago' AND compro='O'");
				$this->db->query("UPDATE smov SET abonos=abonos-$items->monto WHERE transac='$t2transac'");
				
			}
			
			$this->db->query("DELETE FROM cobros WHERE id='$items->id'");
            
		}
		        
        
        $this->db->query("DELETE FROM gser WHERE transac='$ntransac'");
        $this->db->query("DELETE FROM gitser WHERE transac='$ntransac'");
		
		redirect("ventas/antic/dataedit/show/$anticipo");

	}
	function cambio(){
		
		$fecha=$this->input->post('fecha');
        
        $chek=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
		//echo 'aquii'.$chek;
		if ($chek == 0){
			$this->validation->set_message('cambio',"No se ha registrado el VALOR DE LA MONEDA para la fecha $fecha");
			return FALSE;
		}else {
  		return TRUE;
		}
	}
	function _pre_insert($do){
		
		$fecha =$do->get('fecha');
		$serie =$do->get('serie');
		$numero =$do->get('numero');
		$monto=$do->get('monto');
        $intbanco=$do->get('intbanco');
        $comibanco=$do->get('comibanco');
        
        $montob=$monto+$intbanco-$comibanco;
				
		//$numero=$this->datasis->fprox_numero("nr".$serie);    
			
		//actualiza al cambio segun fecha
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
        $moneda=$this->datasis->dameval("SELECT moneda FROM bancos WHERE codigo='$serie'");
        $cuenta=$this->datasis->dameval("SELECT cuenta FROM bancos WHERE codigo='$serie'");
        
        $do->set('tipo','AN');
        $do->set('moneda',$moneda);
        $do->set('cambio',$cambio);
        $do->set('cuenta',$cuenta);
        $do->set('montob',$montob);
  
        logusu('itabonos',"ANTICIPO  A Cliente $serie-$numero CREADO"); 
           			
		return true;
	}
	function _post_insert($do){
		
		$serie =$do->get('serie');
		$numero =$do->get('numero');
		$fecha =$do->get('fecha');
		$id =$do->get('id');
		$cod_cli=$do->get('cod_cli');
        $monto=$do->get('monto');
        $referen=$do->get('referen');
        $fecha=$do->get('fecha');
        $condi1=$do->get('condi1');
        $formap=$do->get('formap');
        $moneda=$do->get('moneda');
        $nombre=$do->get('nombre');
        $intbanco=$do->get('intbanco');
        $comibanco=$do->get('comibanco');
        $usuario=$this->session->userdata['usuario'];
				
		$cajero=1;
            
        //insertar registro en movimientos de bancos bancos
        
        $montot=$monto+$intbanco-$comibanco;
            
        $mSQL=$this->db->query("INSERT INTO bmov(banco,numero,formap,referencia,monto,fecha,observacion,cajero,idabono,recepcion,usuario,clipro,intbanco,comibanco)
                                         VALUES('$serie','$numero','$formap','$referen','$montot','$fecha','$condi1','$cajero','$id','$fecha','$usuario','C','$intbanco','$comibanco')");
                 
		$mSQL_3=$this->db->query("INSERT INTO smov (moneda,tipo_doc,serie,numero,fecha,cod_cli,  nombre, monto ,  usuario,transac,vence)
                                            VALUES('$moneda','AN','$serie','$numero','$fecha','$cod_cli','$nombre','$monto','$usuario','$id','$fecha')");   
   
        
        
        logusu('itabonos',"ANTICIPO  A cod_cli $serie-$numero MODIFICADO"); 
           			
		return true;
	} 
	function _pre_update($do){
		
		$moneda =$do->get('moneda');
		$cod_cli =$do->get('cod_cli');
		$monto =$do->get('monto');
		$aplica =$do->get('aplica');
		
		$fechac  = $this->input->post('fechac');
        $numeroc = $this->input->post('numeroc');

		$chek=$this->datasis->dameval("SELECT COUNT(*) FROM gser WHERE comp='L' AND seriei='010' AND numeroi='$numeroc'");
		
		$chek2=$this->datasis->dameval("SELECT COUNT(*) FROM cambio WHERE fecha='$fechac'");
		
		if($chek>0){
			echo "<span style='color:red' align='center'>Comprobante $numeroc registrado</span>";
			$this->validation->set_message('_pre_update',"Comprobante $numeroc registrado");
			return FALSE;		
		}
		
		if($chek2==0){
			echo "<span style='color:red' align='center'>No se ha registrado el VALOR DE LA MONEDA para la fecha $fechac</span>";
			$this->validation->set_message('_pre_update',"No se ha registrado el VALOR DE LA MONEDA para la fecha $fechac");
			return FALSE;	
			
		}		
					
		$i=$o=$totalg=0;
        
        $cant     = $this->input->post('cant');
        $pago     = $this->input->post('pago');
        $vaplica  = $this->input->post('vaplica');
        
        while($o<$cant){
            
			$array=array('0'=>$pago[$i]);
			
			IF($pago[$i]>0){
				$totalg+=$pago[$i];
			}
            $i++;
			$o++;
		}
		
		$tot=($monto-$aplica-$vaplica);
        $apli=($monto-$aplica);
       
        if($tot<0){
			echo "<span style='color:red' align='center'>Monto seleccionado $totalg mayor al monto que resta por aplicar $apli </span>";
			$this->validation->set_message('_pre_update',"Monto aplicado mayor al anticipo");
			return FALSE;	
		}  
          
                
        if (empty($totalg)){
			echo "<span style='color:red' align='center'>Debe ingresar una cantidad mayor a 0,00 </span>";
			$this->validation->set_message('_pre_update',"Error al ingresar informacion , debe registrar un pago mayor a 0,00");
			return FALSE;
		}else {
			//$do->set('aplica',$aplica);
			return TRUE;
		}
        			
		return true;
	
	}
	function _post_update($do){
		
		$moneda =$do->get('moneda');
		$cod_cli=$do->get('cod_cli');
		$numero =$do->get('numero');
		$serief =$do->get('serie');
		$id     =$do->get('id');
		$cuenta_ori =$do->get('cuenta_ori');
		$nombre =$do->get('nombre');
		$rif    =$do->get('rif');
        //$cambio =$do->get('cambio');
		
		$ntransac=$this->datasis->fprox_numero('ntransa');
		
		//$cant=$this->datasis->dameval("SELECT COUNT(*)	FROM itpagos as a WHERE a.abono < a.monto AND cod_cli='$cod_cli' and a.moneda='$moneda'");		
		//echo $cant.'aquii';
		
		$i=$o=$totalg=0;
        
        $cant    = $this->input->post('cant');
        $factura = $this->input->post('factura');
        $cliente = $this->input->post('cliente');
        $idp     = $this->input->post('idp');
        $pago    = $this->input->post('pago');
        $serie   = $this->input->post('serief');
        $tipo    = $this->input->post('tipo'); 
        
        $fechac   = $this->input->post('fechac');
        $numeroc  = $this->input->post('numeroc');  
        $compro   = $this->input->post('compro');          		
        $control  = $this->input->post('letra');  
        $dfmoneda = $this->input->post('dfmoneda');
        $vaplica  = $this->input->post('vaplica');
        
		$cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fechac'");
		//echo $cant;
		while($o<$cant){
			
			//echo 'items:'.$o;	
			
			$array=array('0'=>$factura[$i],
						'1'=>$cliente[$i],
						'2'=>$pago[$i],
						'3'=>$idp[$i],
						'4'=>$serie[$i],
						'5'=>$tipo[$i],
						'6'=>$compro[$i],
						'7'=>$control[$i]);
            
            //
            $mSQL_2=$this->db->query("UPDATE itpagos SET abono=abono+'$pago[$i]',ultiabonado='$pago[$i]' WHERE cod_cli='$cliente[$i]' AND id='$idp[$i]'");
            //$mSQL_3=$this->db->query("UPDATE letras  SET abono=abono+'$pago[$i]' WHERE cliente='$cliente[$i]' AND factura='$factura[$i]' AND serief='$serie[$i]' AND idpago='$idp[$i]'");          
            
            IF($pago[$i]>0){
                $moneda2=$this->datasis->dameval("SELECT moneda FROM itpagos WHERE id='$idp[$i]'");
				$mSQL_1=$this->db->query("INSERT INTO cobros (tipo,serie,numero,cod_cli,monto,idpago,itabono,fecha,numerod,tipod,transac)VALUES('AN','$serie[$i]','$factura[$i]','$cliente[$i]','$pago[$i]','$idp[$i]','$id','$fechac','$numeroc','L','$ntransac');");
				$cuenta=$this->datasis->dameval("SELECT cuenta FROM itpagos WHERE id='$idp[$i]'");
                $desca=$this->datasis->dameval("SELECT IF(compro='L',CONCAT('LETRA ',serie,'-',control),IF(compro='O',CONCAT('FACTURA ',serie,'-',numero),CONCAT('NOTA DE DEBITO ',serie,'-',numero)))desca FROM itpagos WHERE id='$idp[$i]'");
				IF($moneda==$moneda2){
                    $valor=$pago[$i];
                    $this->db->query("UPDATE itabonos SET aplica=aplica+$valor WHERE id='$id'");
                    
                }else{
                    
                    if($moneda=='02'){
                        $valor=$pago[$i]/$cambio;
                        $this->db->query("UPDATE itabonos SET  aplica=aplica+$valor WHERE id='$id'");
                    }else{
                        $valor=$pago[$i]*$cambio;
                        $this->db->query("UPDATE itabonos SET  aplica=aplica+$valor WHERE id='$id'");
                    
                    }
                
                }
                $this->db->query("INSERT INTO gitser (fecha,transac,proveed,ruc,cuenta,desca,cana,preca,iva,importe,tipo,vexento,estampa,exento,serief,factura,tipoc) VALUES('$fechac','$ntransac','$cod_cli','$rif','$cuenta','$desca','1','$valor','0','$valor','C','S',CURRENT_TIMESTAMP,'$valor','$serie[$i]','$control[$i]','$compro[$i]')");
                $this->_abonos($idp[$i]);
                
			}
                
            $i++;
			$o++;
		} 
        
		
		//$tot2=$this->datasis->dameval("SELECT SUM(monto) FROM cobros WHERE itabono='$id' and numerod='$numeroc' and tipod='L' and tipo='AN'");
        $tot2=$this->datasis->dameval("SELECT sum(importe) FROM gitser where transac='$ntransac'");
        $usuario =$this->session->userdata['usuario'];
		
		$this->db->query("INSERT INTO gser (fecha,recepcion,transac,cuenta,comp,seriei,numeroi,seriep,numero,ccosto,formap,proveed,rif,nombre,vence,cambio,moneda,tipo_doc,condi1,usuario,estampa,cajachica) VALUES 
                                                    ('$fechac','$fechac','$ntransac','$cuenta_ori','L','010','$numeroc','010','$numeroc','0001','0000','$cod_cli','$rif','$nombre','$fechac','$cambio','$moneda','FC','ANTICIPO DE CLIENTE  $numero APLICADO A FACTURAS','$usuario',CURRENT_TIMESTAMP,'N')");
                
        $this->db->query("INSERT INTO gitser (fecha,transac,proveed,ruc,cuenta,desca,cana,preca,iva,importe,tipo,vexento,estampa,exento,serief,factura,tipoc) VALUES('$fechac','$ntransac','$cod_cli','$rif','$cuenta_ori','ANTICIPO DE CLIENTE $numero APLICADO A FACTURAS','1','$tot2','0','$tot2','D','S',CURRENT_TIMESTAMP,'$tot2','$serief','$numero','AN')");
	}
	function _abonos($idpago){
			
		//1.Suma abonos de cobros en itpagos
		$abono=$this->datasis->dameval("SELECT SUM(monto) FROM cobros WHERE idpago='$idpago'");
		$this->db->query("UPDATE itpagos SET abono=$abono WHERE id='$idpago'");
					
		//2. suma itpagos en smov si no son letras
		
		$tipo=$this->datasis->dameval("SELECT COUNT(*) FROM itpagos WHERE id='$idpago'AND compro='O'");
		
		IF($tipo>0){
			
			$transac=$this->datasis->dameval("SELECT transac FROM itpagos WHERE id='$idpago' AND compro='O'");
			$contado=$this->datasis->dameval("SELECT SUM(abono) FROM itpagos WHERE transac='$transac' AND compro='O'");
			$letras=$this->datasis->dameval("SELECT SUM(monto) FROM letras WHERE transac='$transac' AND tipo NOT IN ('CONTADO','LIBRE')");
			$tot=$letras+$contado;
			$this->db->query("UPDATE smov SET abonos='$tot',letras='$letras' WHERE transac='$transac'");
		}

	}   
}
